package io.a;//package io.a;
//
//import org.bytedeco.javacpp.opencv_core;
//import org.bytedeco.javacpp.opencv_core.IplImage;
//import org.bytedeco.javacv.FFmpegFrameGrabber;
//import org.bytedeco.javacv.Frame;
//import org.bytedeco.javacv.FrameGrabber.Exception;
//import org.bytedeco.javacv.Java2DFrameConverter;
//import org.bytedeco.javacv.OpenCVFrameConverter;
//
//import javax.imageio.ImageIO;
//import java.awt.image.BufferedImage;
//import java.io.File;
//import java.io.IOException;
//import lombok.extern.slf4j.Slf4j;
//
///**
// * 视频操作工具类
// */
//@Slf4j
//public class FfmpegVideoUtils {
//
//    /**
//     * 截取视频第一帧为图片展示
//     *
//     * @param filePath       视频路径
//     * @param targetFilePath 第一帧图片存储位置
//     * @param targetFileName 图片名称
//     */
//    public static void getVideoFirstFrameImage(String filePath, String targetFilePath, String targetFileName) throws Exception {
//        FFmpegFrameGrabber ff = FFmpegFrameGrabber.createDefault(filePath);
//        ff.start();
//        String rotate = ff.getVideoMetadata("rotate");
//        Frame f;
//        int i = 0;
//        while (i < 1) {
//            f = ff.grabImage();
//            IplImage src;
//            if (null != rotate && rotate.length() > 1) {
//                OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
//                src = converter.convert(f);
//                f = converter.convert(rotate(src, Integer.parseInt(rotate)));
//            }
//            doExecuteFrame(f, targetFilePath, targetFileName);
//            i++;
//        }
//        ff.stop();
//    }
//
//    /**
//     * 进行旋转角度操作（为了保证截取到的第一帧图片与视频中的角度方向保持一致）
//     */
//    public static IplImage rotate(IplImage src, int angle) {
//        IplImage img = IplImage.create(src.height(), src.width(), src.depth(), src.nChannels());
//        opencv_core.cvTranspose(src, img);
//        opencv_core.cvFlip(img, img, angle);
//        return img;
//    }
//
//    public static void doExecuteFrame(Frame f, String targetFilePath, String targetFileName) {
//        if (null == f || null == f.image) {
//            return;
//        }
//        Java2DFrameConverter converter = new Java2DFrameConverter();
//        String imageMat = "jpg";
//        String fileName = targetFilePath + File.separator + targetFileName + "." + imageMat;
//        BufferedImage bi = converter.getBufferedImage(f);
//        File output = new File(fileName);
//        try {
//            ImageIO.write(bi, imageMat, output);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    public static void main(String[] args) throws Exception {
//        String url = "C:\\Users\\admin\\Desktop\\test.mp4";
//        getVideoFirstFrameImage(url, "C:\\Users\\admin\\Desktop", "first");
//    }
//
//}